unit mainform_frm;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, DbCtrls, StdCtrls, DBGrids, ComCtrls, Buttons, Calendar, EditBtn,
  Menus, datamodule1_frm, ZSqlUpdate, ZSqlMonitor, ZDataset, stampe_frm,
  auth_frm, db,autorizzazioni_frm, gare_frm,sal_frm;

type

  { TMainForm }

  TMainForm = class(TForm)
    bteliminadefinitivo: TButton;
    bteliminaesecutivo: TButton;
    bteliminapreliminare: TButton;
    btinsertesecutivo: TButton;
    btsalvaprogetto: TButton;
    btinsertprogetto: TButton;
    btinsertpreliminare: TButton;
    btinsertdefinitivo: TButton;
    btdeletecomune: TButton;
    btcalcolatotale: TButton;
    btspostaarearesp: TButton;
    btvariante: TButton;
    btstampe: TButton;
    Button2: TButton;
    btsalvaesecuzione: TButton;
    btsalvaesecutivo: TButton;
    btsalvaaffidamento: TButton;
    btsalvadef: TButton;
    btsalvapreliminare: TButton;
    btinsertcomune: TButton;
    cbarearesp: TComboBox;
    chkprconclusi: TCheckBox;
    cbarearespnew: TComboBox;
    DBCheckBox1: TDBCheckBox;
    DBComboBox1: TDBComboBox;
    eddescopera: TDBMemo;
    db_es_data_ver_riesame: TDBEdit;
    db_pr_data_ver_riesame: TDBEdit;
    db_de_data_ver_riesame: TDBEdit;
    dvedrup: TDBEdit;
    dbimportoconsaltrespese: TDBEdit;
    dbsommadispo: TDBEdit;
    DB_PR_NOME: TDBEdit;
    DBGrid10: TDBGrid;
    DBGrid11: TDBGrid;
    DBGrid12: TDBGrid;
    DBGrid13: TDBGrid;
    DBGrid14: TDBGrid;
    DBGrid15: TDBGrid;
    DBGrid16: TDBGrid;
    DBGrid17: TDBGrid;
    DBGrid18: TDBGrid;
    DBGrid19: TDBGrid;
    DBGrid2: TDBGrid;
    DBGrid20: TDBGrid;
    DBGrid21: TDBGrid;
    DBGrid22: TDBGrid;
    DBGrid23: TDBGrid;
    DBGrid24: TDBGrid;
    DBGrid25: TDBGrid;
    DBGrid26: TDBGrid;
    DBGrid27: TDBGrid;
    DBGrid28: TDBGrid;
    DBGrid29: TDBGrid;
    DBGrid3: TDBGrid;
    DBGrid30: TDBGrid;
    DBGrid31: TDBGrid;
    DBGrid4: TDBGrid;
    DBGrid5: TDBGrid;
    DBGrid6: TDBGrid;
    DBGrid7: TDBGrid;
    DBGrid8: TDBGrid;
    DBGrid9: TDBGrid;
    dbgrigliaesecutivo: TDBGrid;
    cbcomuni: TDBLookupComboBox;
    DB_ES_OP_Data_Coll_Pro_Pr: TDBEdit;
    DB_ES_OP_Data_App_Coll_Prov_Ef: TDBEdit;
    DB_ES_OP_Data_Coll_Def: TDBEdit;
    DB_ES_OP_Data_Ult_Eff: TDBEdit;
    DB_ES_OP_Data_Ult_Pr: TDBEdit;
    DB_ES_OP_Data_Coll_Pro_Eff: TDBEdit;
    DB_ES_OP_Data_App_Coll_Prov_Pr: TDBEdit;
    DB_ES_OP_Data_Del_Ch_Op: TDBEdit;
    DB_ES_OP_Data_Avvio_Eser_Eff: TDBEdit;
    DB_ES_OP_Data_Inizio_Cont: TDBEdit;
    DB_ES_OP_Data_Fine_Cont: TDBEdit;
    DB_DE_NOME: TDBEdit;
    DB_PR_ES_NOME: TDBEdit;
    grigliasal: TDBGrid;
    DB_ES_OP_Cons_Opera_1: TDBMemo;
    DB_ES_OP_Cons_Opera_2: TDBMemo;
    DB_ES_OP_Cons_Opera_3: TDBMemo;
    DB_ES_OP_Riserve_Appal: TDBMemo;
    DB_ES_OP_Data_Val_Comp: TDBEdit;
    DB_ES_OP_Data_Avvio_Eser_Pr: TDBEdit;
    DBEdit13: TDBEdit;
    DB_ES_OP_Ass_Dl: TDBEdit;
    DB_ES_OP_Coord: TDBEdit;
    DB_ES_OP_Data_Pr_Cons: TDBEdit;
    DB_ES_OP_Data_Eff_Cons: TDBEdit;
    DB_ES_OP_Data_Eff_Inizio: TDBEdit;
    DB_ES_OP_Perc_Real: TDBEdit;
    DB_ES_OP_Imp_Def_Ris_Acc_Bon: TDBEdit;
    DB_ES_OP_Imp_Def_Ris_Cont: TDBEdit;
    DB_ES_OP_Imp_Cons_App: TDBEdit;
    DB_ES_OP_Imp_Cons_Tec: TDBEdit;
    DB_ES_OP_Imp_Cons_For: TDBEdit;
    DB_ES_OP_Imp_Tot_Opera: TDBEdit;
    DB_ES_OP_Val_Comp: TDBEdit;
    DB_AF_RE_Rib_Cons: TDBEdit;
    DB_AF_RE_Data_Ric_Dati: TDBEdit;
    DB_AF_RE_Data_Pr_Avvio_App: TDBEdit;
    DB_AF_RE_Data_Eff_Avvio: TDBEdit;
    DB_AF_RE_Data_Espl: TDBEdit;
    DB_AF_RE_Data_Pr_Agg: TDBEdit;
    DB_AF_RE_Data_Eff_Contr: TDBEdit;
    DBEdit43: TDBEdit;
    DBEdit44: TDBEdit;
    DBEdit45: TDBEdit;
    DBEdit46: TDBEdit;
    DB_AF_RE_Impr_Agg_Lav: TDBEdit;
    DB_AF_RE_Imp_Base_Asta: TDBEdit;
    DB_ES_OP_Dir_Lav: TDBEdit;
    dbgrigliadefinitivo: TDBGrid;
    dbgrigliapreliminari: TDBGrid;
    DB_RG_DE_Incarico: TDBRadioGroup;
    DB_RG_PR_Incarico: TDBRadioGroup;
    DB_RG_ES_Incarico: TDBRadioGroup;
    DB_DE_Progett: TDBEdit;
    DB_PR_ES_Progett: TDBEdit;
    DB_PR_ES_Ass_Pro: TDBEdit;
    DB_PR_ES_Rif_Int: TDBEdit;
    DB_PR_ES_Coor_Sic: TDBEdit;
    DB_PR_ES_Data_Ass: TDBEdit;
    DB_PR_ES_Data_Pr_Appr: TDBEdit;
    DB_PR_ES_Data_Eff_Appr: TDBEdit;
    DB_PR_ES_Data_Del_Appr: TDBEdit;
    DB_DE_Ass_Pro: TDBEdit;
    DB_PR_ES_Num_Del_Appr: TDBEdit;
    DB_AF_RE_Impr_Affid: TDBEdit;
    DB_DE_Rif_Int: TDBEdit;
    DB_DE_Val_Prev: TDBEdit;
    DB_De_Data_Pr_Appr: TDBEdit;
    DB_DE_Data_Eff_Appr: TDBEdit;
    DB_DE_Data_Del_Appr: TDBEdit;
    DB_DE_Num_Del_Appr: TDBEdit;
    DB_DE_Data_Ass: TDBEdit;
    grigliaautorizzazioni: TDBGrid;
    DB_PR_Progett: TDBEdit;
    DB_PR_Num_Del_Appr: TDBEdit;
    DB_PR_Ass_Pro: TDBEdit;
    DB_PR_Rif_Int: TDBEdit;
    DB_PR_Val_Prev: TDBEdit;
    DB_PR_Data_Ass: TDBEdit;
    DB_PR_Data_Pr_Appr: TDBEdit;
    DB_PR_Data_Eff_Appr: TDBEdit;
    DB_PR_Data_Del_Appr: TDBEdit;
    DB_CB_ACQ: TDBCheckBox;
    DB_CB_DEP: TDBCheckBox;
    DB_CB_FOG: TDBCheckBox;
    DB_CB_GAS: TDBCheckBox;
    DB_Cod_AATO_ACQ: TDBEdit;
    DB_Cod_AATO_FOG: TDBEdit;
    DB_Fonte_Fin: TDBEdit;
    DB_Cod_Att: TDBEdit;
    DB_Fin: TDBEdit;
    DB_Cod_AATO_DEP: TDBEdit;
    DB_Inv_Compl: TDBEdit;
    dbgrigliaprogetti: TDBGrid;


    headerpanel: TPanel;
    Label1: TLabel;
    Label10: TLabel;
    Label100: TLabel;
    Label101: TLabel;
    Label102: TLabel;
    Label103: TLabel;
    Label104: TLabel;
    Label105: TLabel;
    Label106: TLabel;
    Label107: TLabel;
    Label108: TLabel;
    Label109: TLabel;
    Label11: TLabel;
    Label110: TLabel;
    Label111: TLabel;
    Label112: TLabel;
    Label113: TLabel;
    Label114: TLabel;
    Label115: TLabel;
    Label116: TLabel;
    Label117: TLabel;
    Label118: TLabel;
    Label119: TLabel;
    Label12: TLabel;
    Label120: TLabel;
    Label121: TLabel;
    Label122: TLabel;
    Label123: TLabel;
    Label13: TLabel;
    Label130: TLabel;
    Label131: TLabel;
    Label132: TLabel;
    Label133: TLabel;
    Label134: TLabel;
    Label135: TLabel;
    Label136: TLabel;
    Label137: TLabel;
    Label138: TLabel;
    Label139: TLabel;
    Label14: TLabel;
    Label140: TLabel;
    Label141: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label2: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label3: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Label38: TLabel;
    Label39: TLabel;
    Label4: TLabel;
    Label40: TLabel;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    Label47: TLabel;
    Label48: TLabel;
    Label49: TLabel;
    Label5: TLabel;
    Label50: TLabel;
    Label51: TLabel;
    Label52: TLabel;
    Label53: TLabel;
    Label54: TLabel;
    Label55: TLabel;
    Label56: TLabel;
    Label57: TLabel;
    Label58: TLabel;
    Label59: TLabel;
    Label6: TLabel;
    Label60: TLabel;
    Label61: TLabel;
    Label62: TLabel;
    Label63: TLabel;
    Label64: TLabel;
    Label65: TLabel;
    Label66: TLabel;
    Label67: TLabel;
    Label68: TLabel;
    Label69: TLabel;
    Label7: TLabel;
    Label70: TLabel;
    Label71: TLabel;
    Label72: TLabel;
    Label73: TLabel;
    Label74: TLabel;
    Label75: TLabel;
    Label76: TLabel;
    Label77: TLabel;
    Label78: TLabel;
    Label79: TLabel;
    Label8: TLabel;
    Label80: TLabel;
    Label81: TLabel;
    Label82: TLabel;
    Label83: TLabel;
    Label84: TLabel;
    Label85: TLabel;
    Label86: TLabel;
    Label87: TLabel;
    Label88: TLabel;
    Label89: TLabel;
    Label9: TLabel;
    Label90: TLabel;
    Label91: TLabel;
    Label92: TLabel;
    Label93: TLabel;
    Label94: TLabel;
    Label95: TLabel;
    Label96: TLabel;
    Label97: TLabel;
    Label98: TLabel;
    Label99: TLabel;
    lbvariante: TLabel;
    lbvariante1: TLabel;
    lbvariante2: TLabel;
    menueliminaaut: TMenuItem;
    menunuovosal: TMenuItem;
    menueliminasal: TMenuItem;
    menunuovagara: TMenuItem;
    menueliminagara: TMenuItem;
    menunuovaaut: TMenuItem;
    notepre: TDBMemo;
    notedef: TDBMemo;
    noteese: TDBMemo;
    notepre1: TDBMemo;
    PageControl1: TPageControl;
    PopupMenu1: TPopupMenu;
    PopupMenu2: TPopupMenu;
    PopupMenu3: TPopupMenu;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    Tab_preliminare: TTabSheet;
    Tab_anagrafica: TTabSheet;
    ZSQLMonitor1: TZSQLMonitor;
    procedure bteliminadefinitivoClick(Sender: TObject);
    procedure bteliminaesecutivoClick(Sender: TObject);
    procedure bteliminapreliminareClick(Sender: TObject);
    procedure btinsertdefinitivoClick(Sender: TObject);
    procedure btinsertesecutivoClick(Sender: TObject);
    procedure btcalcolatotaleClick(Sender: TObject);
    procedure btdeletecomuneClick(Sender: TObject);
    procedure bteliminaautorizzazioneClick(Sender: TObject);
    procedure btinsertpreliminareClick(Sender: TObject);
    procedure btsalvaesecutivoClick(Sender: TObject);
    procedure btsalvaesecuzioneClick(Sender: TObject);
    procedure btspostaarearespClick(Sender: TObject);
    procedure btstampeClick(Sender: TObject);
    procedure btvarianteClick(Sender: TObject);

    procedure btinsertprogettoClick(Sender: TObject);
    procedure btsalvaprogettoClick(Sender: TObject);
    procedure btsalvadefClick(Sender: TObject);
    procedure btsalvapreliminareClick(Sender: TObject);
    procedure btinsertcomuneClick(Sender: TObject);
    procedure btsalvaaffidamentoClick(Sender: TObject);

    procedure cbarearespChange(Sender: TObject);
    procedure chkprconclusiChange(Sender: TObject);
    procedure DBGrid26DblClick(Sender: TObject);
    procedure dbgrigliadefinitivoDblClick(Sender: TObject);
    procedure dbgrigliaesecutivoDblClick(Sender: TObject);
    procedure dbgrigliapreliminariDblClick(Sender: TObject);
    procedure dbgrigliaprogettiDblClick(Sender: TObject);
    procedure DB_RG_DE_IncaricoChange(Sender: TObject);
    procedure DB_RG_ES_IncaricoChange(Sender: TObject);
    procedure DB_RG_PR_IncaricoChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure grigliaautorizzazioniDblClick(Sender: TObject);
    procedure grigliasalDblClick(Sender: TObject);
    procedure logmodanagrafica;
    procedure logmodpreliminare;
procedure logmoddefinitivo;
procedure logmodesecutivo;
    procedure logmodaffidamento;
    procedure logmodlavori;
    function getmaxanagrafica:integer;
    function getmaxpreliminare(progetto:integer):integer;
    procedure menueliminaautClick(Sender: TObject);
    procedure menueliminagaraClick(Sender: TObject);
    procedure menueliminasalClick(Sender: TObject);
    procedure menunuovaautClick(Sender: TObject);
    procedure menunuovagaraClick(Sender: TObject);
    procedure menunuovosalClick(Sender: TObject);
    procedure newpreliminare(progetto,preliminare:integer;nome:string);
    procedure newdefinitivo(progetto,preliminare,definitivo:integer;nome:string);
    procedure newesecutivo(progetto,preliminare,definitivo,esecutivo:integer;nome:string);
    procedure newaffidamento(progetto,preliminare,definitivo,esecutivo:integer);
    procedure newlavori(progetto,preliminare,definitivo,esecutivo:integer);
    function getmaxdefinitivo(progetto,preliminare:integer):integer;
    function getmaxesecutivo(progetto,preliminare,definitivo:integer):integer;
    function getmaxgara(progetto,preliminare,definitivo,esecutivo:integer):integer;

  private
    { private declarations }
  public
    { public declarations }
    procedure modanagrafica;
    procedure modpreliminare;
    procedure moddefinitivo;
    procedure modesecutivo;
    procedure modaffidamento;
    procedure modlavori;
    procedure modstandard;
  end; 

var
  MainForm: TMainForm;

implementation

{ TMainForm }

procedure TMainForm.FormShow(Sender: TObject);
begin
//mostro la form per l'autenticazione
authform:=tauthform.create(self);
authform.showmodal;

//controllo  se siamo usciti con un'autenticazione positiva oppure chiudo il programma
if not DataModule1.loginok then
   begin
       Close;
       exit;
   end;


//gestisco i permessi dell'utente
with DataModule1.zqutenti do
     begin
       if FieldByName('Inserimento_Nuovo_Progetto').AsBoolean then
          btinsertprogetto.Enabled:=true;

       if FieldByName('Autorizzazione_Anagrafica').AsBoolean then
          begin
               DataModule1.zqanagrafica.ReadOnly:=false;
               DataModule1.zqcomuniinteressati.ReadOnly:=false;
               btspostaarearesp.Enabled:=true;
          end
       else
           begin
                DataModule1.zqanagrafica.ReadOnly:=true;
                DataModule1.zqcomuniinteressati.ReadOnly:=true;
                btspostaarearesp.Enabled:=false;
           end;

       if FieldByName('Autorizzazione_Preliminare').AsBoolean then
          begin
               DataModule1.zqpreliminare.ReadOnly:=false;
               btinsertpreliminare.Enabled:=true;
               if FieldByName('Autorizzazione_Eliminazioni').AsBoolean then
               begin
                    bteliminapreliminare.Enabled:=true;
                    end
               else
                   bteliminapreliminare.Enabled:=false;
          end
       else
           begin
             DataModule1.zqpreliminare.ReadOnly:=true;
             btinsertpreliminare.Enabled:=false;
           end;

       if FieldByName('Autorizzazione_Definitiva').AsBoolean then
          begin
               DataModule1.zqdefinitivo.ReadOnly:=false;
               btinsertdefinitivo.Enabled:=true;
               if FieldByName('Autorizzazione_Eliminazioni').AsBoolean then
               begin
                    bteliminadefinitivo.Enabled:=true;
                    end
               else
                   bteliminadefinitivo.Enabled:=false;
          end
       else
           begin
               DataModule1.zqdefinitivo.ReadOnly:=true;
               btinsertdefinitivo.Enabled:=false;
           end;

       if FieldByName('Autorizzazione_Esecutiva').AsBoolean then
          begin
               DataModule1.zqesecutivo.ReadOnly:=false;
               DataModule1.zqautorizzazioni.ReadOnly:=false;
               btinsertesecutivo.Enabled:=true;
               menunuovaaut.Enabled:=true;
               if FieldByName('Autorizzazione_Eliminazioni').AsBoolean then
               begin
                    bteliminaesecutivo.Enabled:=true;
                    end
               else
                   bteliminaesecutivo.Enabled:=false;
          end
       else
           begin
                DataModule1.zqesecutivo.ReadOnly:=true;
                DataModule1.zqautorizzazioni.ReadOnly:=true;
                menunuovaaut.Enabled:=false;
                btinsertesecutivo.Enabled:=false;
           end;

       if FieldByName('Autorizzazione_Fornitura').AsBoolean then
          begin
               DataModule1.zqaffidreal.ReadOnly:=false;
               DataModule1.zqgare.ReadOnly:=false;
               //btnuovagara.enabed:=true;
          end
       else
           begin
                DataModule1.zqaffidreal.ReadOnly:=true;
                DataModule1.zqgare.ReadOnly:=true;
           end;

       if FieldByName('Autorizzazione_Esecuzione').AsBoolean then
          begin
               DataModule1.zqlavori.ReadOnly:=false;
               DataModule1.zqsal.ReadOnly:=false;
               //btnuovosal.enabed:=true;
               btvariante.Enabled:=true;
          end
       else
           begin
                DataModule1.zqlavori.ReadOnly:=true;
                DataModule1.zqsal.ReadOnly:=true;
           end;

       if FieldByName('Autorizzazione_Standard').AsBoolean then
          //do nothing
     end;
//popolo la combo area responsabili filtrata in base ai permessi
with datamodule1.zqarearesp do
       begin
         close;
         sql.clear;
         sql.add('SELECT * FROM Utenti_Aree '+
                 'WHERE Utente=:UTENTE');
         ParamByName('Utente').AsString:=DataModule1.zqutenti.FieldByName('Utente').AsString;
         ExecSQL;
         Open;
         first;
         while not EOF do
               begin
                 cbarearesp.Items.add(FieldByName('Area').AsString);
                 Next;
               end;
         close;
       end;

// popoliamo la combo aree responsabili  complete
  with datamodule1.zqarearesp do
       begin
         close;
         sql.clear;
         sql.add('select * from Aree_Responsabili');
         ExecSQL;
         Open;
         first;
         while not EOF do
               begin
                 cbarearespnew.Items.add(FieldByName('Area_Responsabile').AsString);
                 Next;
               end;
         close;
       end;

  //ingrandisco la forma  schermo intero
  WindowState:=wsMaximized;

  //controllo la chiusura dei lavori
  //gira script che segnala se
  //non è stato inserito il collaudo definitivo (ES_OP_DATA_COLL_DEF)
  // sono passati due anni dalla data del collaudo provvisorio (ES_OP_DATA_COLL_PRO_EFF)
  //non ci sono valori nei campi dei contenziosi (ES_OP_DATA_INIZIO_CONT e ES_OP_DATA_FINE_CONT)
  //oppure sono passati due anni dalla fine del contenzionso  (ES_OP_DATA_FINE_CONT)
  //in questo caso chiedo se inserire la data del collaudo definitivo ( ES_OP_DATA_COLL_DEF )
  //calcolata come la data del provvisorio più 2 anni (ES_OP_DATA_COLL_PRO_EFF + 2)
  //o come fine contenzioso più due anni (ES_OP_DATA_FINE_CONT + 2)
end;

procedure TMainForm.grigliaautorizzazioniDblClick(Sender: TObject);
begin
if lbvariante.Caption <> 'Bloccato Variante' then
   begin
     //apro la form per la modifica
     autorizzazioni:=tautorizzazioni.create(self);
     Autorizzazioni.btsalvaautorizzazione.Caption:='Modifica';
     autorizzazioni.showmodal;
   end;

end;

procedure TMainForm.grigliasalDblClick(Sender: TObject);
begin
if lbvariante2.Caption <> 'Bloccato Variante' then
   begin
     //apro la form per la modifica
     sal:=tsal.create(self);
     sal.btsalvasal.Caption:='Modifica';
     sal.showmodal;
   end;

end;





procedure TMainForm.cbarearespChange(Sender: TObject);
begin
//selezioniamo tutti i progetti relativi all'area
   DataModule1.zqanagrafica.close;
   DataModule1.zqanagrafica.SQL.clear;
   if chkprconclusi.Checked then
    //visualizzo anche i progetti conclusi
    DataModule1.zqanagrafica.SQL.Add('SELECT * FROM ANAGRAFICA WHERE AN_OP_AREA_RESP=:AREARESP')
  else
    begin
      //non visualizzo i progetti conclusi filtrando il campo xxx
      DataModule1.zqanagrafica.SQL.add('SELECT distinct anagrafica.* FROM ANAGRAFICA '+
                                       'INNER JOIN LAVORI ON ANAGRAFICA.AN_OP_ID_OPERA=LAVORI.AN_OP_ID_OPERA '+
                                       'WHERE AN_OP_AREA_RESP=:AREARESP '+
                                       'AND ES_OP_DATA_COLL_DEF is null');
      //controllare se esiste almeno un esecutivo
      //o se è minore di tre mesi
    end;
  DataModule1.zqanagrafica.ParamByName('AREARESP').AsString:=cbarearesp.Text;
  DataModule1.zqanagrafica.open;
end;

procedure TMainForm.chkprconclusiChange(Sender: TObject);
begin
  //faccio ricaricare la lista dei progetti
  cbarearespChange(self);
end;

procedure TMainForm.DBGrid26DblClick(Sender: TObject);
begin
  if lbvariante1.Caption <> 'Bloccato Variante' then
   begin
     //apro la form per la modifica
     gare:=tgare.create(self);
     gare.btsalva.Caption:='Modifica';
     gare.showmodal;
   end;

end;


procedure TMainForm.dbgrigliadefinitivoDblClick(Sender: TObject);
begin
     //mi posiziono sulla linguetta definitivi
  PageControl1.ActivePageIndex:=3;
end;


procedure TMainForm.dbgrigliaesecutivoDblClick(Sender: TObject);
begin
     //mi posiziono sulla linguetta esecutivi
  PageControl1.ActivePageIndex:=4;
end;








procedure TMainForm.dbgrigliapreliminariDblClick(Sender: TObject);
begin
     //mi posiziono sulla linguetta preliminare
  PageControl1.ActivePageIndex:=2;
end;



procedure TMainForm.dbgrigliaprogettiDblClick(Sender: TObject);
begin
   //mi posiziono sulla linguetta anagrafica
  PageControl1.ActivePageIndex:=0;
end;

procedure TMainForm.DB_RG_DE_IncaricoChange(Sender: TObject);
begin
  //se l'incarico è interno disabilito il campo riferimento interno
  if DB_RG_DE_Incarico.ItemIndex=0 then
     DB_DE_Rif_Int.Enabled:=false
  else
      DB_de_Rif_Int.Enabled:=true;
end;

procedure TMainForm.DB_RG_ES_IncaricoChange(Sender: TObject);
begin
  //se l'incarico è interno disabilito il campo riferimento interno
  if DB_RG_es_Incarico.ItemIndex=0 then
     DB_PR_ES_Rif_Int.Enabled:=false
  else
      DB_PR_es_Rif_Int.Enabled:=true;
end;

procedure TMainForm.DB_RG_PR_IncaricoChange(Sender: TObject);
begin
//se l'incarico è interno disabilito il campo riferimento interno
  if DB_RG_PR_Incarico.ItemIndex=0 then
     DB_PR_Rif_Int.Enabled:=false
  else
      DB_PR_Rif_Int.Enabled:=true;
end;


procedure TMainForm.btsalvaprogettoClick(Sender: TObject);
var nuovoid:integer;
begin

  //se si tratta di inserimento passo il valore dell'area reponsabile
  if btsalvaprogetto.Caption = 'Salva Anagrafica' then
     begin
       //genero il nuovo id
       nuovoid:=getmaxanagrafica+1;
       DataModule1.zqanagrafica.FieldByName('AN_OP_AREA_RESP').Value:=cbarearesp.Text;
       DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').Value:=nuovoid;
     end;
  //quindi salvo le modifiche
  DataModule1.zqanagrafica.ApplyUpdates;
  DataModule1.zqanagrafica.CommitUpdates;
  if btsalvaprogetto.Caption = 'Salva Anagrafica' then
    begin
      //inserisco preliminare nella tabella
      newpreliminare(nuovoid,1,'Preliminare Base');
      //inserisco definitivo nella tabella
      newdefinitivo(nuovoid,1,1,'Definitivo Base');
      //inserisco esecutivo nella tabella
      newesecutivo(nuovoid,1,1,1,'Esecutivo Base');
      //inserisco affidamento nella tabella
      newaffidamento(nuovoid,1,1,1);
      //inserisco lavori nella tabella
      newlavori(nuovoid,1,1,1);
    end;
  //ricarico i dati
  DataModule1.zqanagrafica.Refresh;
  if btsalvaprogetto.Caption = 'Salva Anagrafica' then
    begin
      //seleziono il nuovo
      DataModule1.zqanagrafica.Last;
    end;
  //inserimento log modifica su tabella apposita
  logmodanagrafica;
  //risistemo i pulsanti
  btsalvaprogetto.Caption:='Modifica Anagrafica';
  btsalvaprogetto.Enabled:=false;



end;


procedure TMainForm.newpreliminare(progetto,preliminare:integer;nome:string);
begin
  if not DataModule1.zqpreliminare.Active then
         DataModule1.zqpreliminare.open;
      DataModule1.dspreliminare.DataSet.Insert;
      datamodule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').Value:=progetto;
      datamodule1.zqpreliminare.FieldByName('IDPRELIMINARE').value:=preliminare;
      datamodule1.zqpreliminare.FieldByName('NOME').value:=nome;
      DataModule1.zqpreliminare.ApplyUpdates;
      DataModule1.zqpreliminare.CommitUpdates;
end;

procedure TMainForm.newdefinitivo(progetto,preliminare,definitivo:integer;nome:string);
begin
   if not DataModule1.zqdefinitivo.Active then
         DataModule1.zqdefinitivo.open;
      DataModule1.dsdefinitivo.DataSet.Insert;
      datamodule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').Value:=progetto;
      datamodule1.zqdefinitivo.FieldByName('IDPRELIMINARE').Value:=preliminare;
      datamodule1.zqdefinitivo.FieldByName('IDDEFINITIVO').Value:=definitivo;
      datamodule1.zqdefinitivo.FieldByName('NOME').Value:=nome;
      DataModule1.zqdefinitivo.ApplyUpdates;
      DataModule1.zqdefinitivo.CommitUpdates;
end;

procedure TMainForm.newesecutivo(progetto,preliminare,definitivo,esecutivo:integer;nome:string);
begin
  if not DataModule1.zqesecutivo.Active then
         DataModule1.zqesecutivo.open;
      DataModule1.dsesecutivo.DataSet.Insert;
      datamodule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').Value:=progetto;
      datamodule1.zqesecutivo.FieldByName('IDPRELIMINARE').Value:=preliminare;
      datamodule1.zqesecutivo.FieldByName('IDDEFINITIVO').Value:=definitivo;
      datamodule1.zqesecutivo.FieldByName('IDESECUTIVO').Value:=esecutivo;
      datamodule1.zqesecutivo.FieldByName('NOME').Value:=nome;
      DataModule1.zqesecutivo.ApplyUpdates;
      DataModule1.zqesecutivo.CommitUpdates;
end;

procedure TMainForm.newaffidamento(progetto,preliminare,definitivo,esecutivo:integer);
begin
   if not DataModule1.zqaffidreal.Active then
         DataModule1.zqaffidreal.open;
      DataModule1.dsaffidreal.DataSet.Insert;
      datamodule1.zqaffidreal.FieldByName('AN_OP_ID_OPERA').Value:=progetto;
      datamodule1.zqaffidreal.FieldByName('IDPRELIMINARE').Value:=preliminare;
      datamodule1.zqaffidreal.FieldByName('IDDEFINITIVO').Value:=definitivo;
      datamodule1.zqaffidreal.FieldByName('IDESECUTIVO').Value:=esecutivo;
      DataModule1.zqaffidreal.ApplyUpdates;
      DataModule1.zqaffidreal.CommitUpdates;
end;

procedure TMainForm.newlavori(progetto,preliminare,definitivo,esecutivo:integer);
begin
  if not DataModule1.zqlavori.Active then
         DataModule1.zqlavori.open;
      DataModule1.dslavori.DataSet.Insert;
      datamodule1.zqlavori.FieldByName('AN_OP_ID_OPERA').Value:=progetto;
      datamodule1.zqlavori.FieldByName('IDPRELIMINARE').Value:=preliminare;
      datamodule1.zqlavori.FieldByName('IDDEFINITIVO').Value:=definitivo;
      datamodule1.zqlavori.FieldByName('IDESECUTIVO').Value:=esecutivo;
      DataModule1.zqlavori.ApplyUpdates;
      DataModule1.zqlavori.CommitUpdates;
end;

procedure TMainForm.btsalvadefClick(Sender: TObject);
begin
   DataModule1.zqdefinitivo.ApplyUpdates;
  DataModule1.zqdefinitivo.CommitUpdates;
  //aggiorna la griglia del definitivi
  DataModule1.dsgrigliadefinitivo.DataSet.Refresh;
  //inserimento log modifica su tabella apposita
  logmoddefinitivo;
  //risistemo i pulsanti
  btsalvadef.Enabled:=false;
end;


procedure TMainForm.btinsertpreliminareClick(Sender: TObject);
var nuovopre,nuovodef,nuovoese:integer;
begin
  nuovopre:=getmaxpreliminare(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger )+1;
  //inserisco un record nella tabella dei pereliminari
  newpreliminare(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,nuovopre,'Preliminare Base');
  DataModule1.zqgrigliapreliminari.Refresh;
   DataModule1.zqgrigliapreliminari.Last;
  //mi posiziono sulla linguetta preliminare
  PageControl1.ActivePageIndex:=2;
  nuovodef:=getmaxdefinitivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').asinteger )+1;
  //inserisco un record nella tabella dei pereliminari
  newdefinitivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').asinteger,nuovodef,'Definitivo Base');
  DataModule1.zqgrigliadefinitivo.Refresh;
  DataModule1.zqgrigliadefinitivo.Last;
  //mi posiziono sulla linguetta preliminare
  nuovoese:=getmaxesecutivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger, DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger )+1;
  //inserisco un record nella tabella dei esecutivi, affidamenti e lavori
  newesecutivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese,'Esecutivo Base');
  newaffidamento(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese);
  newlavori(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese);
  DataModule1.zqgrigliaesecutivo.Refresh;
  DataModule1.zqgrigliaesecutivo.Last;
end;





procedure TMainForm.btsalvaesecutivoClick(Sender: TObject);
begin
  DataModule1.zqesecutivo.ApplyUpdates;
  DataModule1.zqesecutivo.CommitUpdates;
  //aggiorna la griglia del definitivi
  DataModule1.dsgrigliaesecutivo.DataSet.Refresh;
  //inserimento log modifica su tabella apposita
  logmodesecutivo;
  //risistemo i pulsanti
  btsalvaesecutivo.Enabled:=false;
end;

procedure TMainForm.btsalvaesecuzioneClick(Sender: TObject);
begin
  DataModule1.zqlavori.ApplyUpdates;
  DataModule1.zqlavori.CommitUpdates;
  //inserimento log modifica su tabella apposita
  logmodlavori;
  //risistemo i pulsanti
  btsalvaesecuzione.Caption:='Modifila Esecuzione Opera';
  btsalvaesecuzione.Enabled:=false;
end;

procedure TMainForm.btspostaarearespClick(Sender: TObject);
begin
  //controllo che sia stato selezionato qualche cosa
  if cbarearespnew.ItemIndex <> -1 then
     begin
       with DataModule1.zquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('UPDATE ANAGRAFICA ' +
                      'SET AN_OP_AREA_RESP=:AREA ' +
                      'WHERE AN_OP_ID_OPERA=:IDOPERA');
              ParamByName('AREA').AsString:=cbarearespnew.Text;
              ParamByName('IDOPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
              ExecSQL;
            end;

       DataModule1.zqanagrafica.Refresh;
     end;
end;


procedure tmainform.logmodanagrafica;
begin
     with DataModule1.zquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('INSERT INTO MODIFICHE' +
                      '(IDPROGETTO,IDPRELIMINARE,IDDEFINITIVO,IDESECUTIVO,Utente, Tabella, Data) ' +
                      'values (:IDPROGETTO,null,null,null,:Utente, :Tabella, :Data)');
              ParamByName('IDPROGETTO').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
              ParamByName('Tabella').AsString:='Anagrafica';
              ParamByName('Utente').AsString:=DataModule1.username;
              ParamByName('Data').AsDateTime:=Now;
              ExecSQL;
            end;
     DataModule1.zqmodana.Refresh;
end;

function tmainform.getmaxanagrafica:integer;
begin
     with DataModule1.zquery1 do
      begin
        close;
        sql.clear;
        sql.add('SELECT max(AN_OP_ID_OPERA) as massimo FROM ANAGRAFICA');
        ExecSQL;
        open;
        result:=FieldByName('massimo').AsInteger;
        close;
      end;
end;

function tmainform.getmaxpreliminare(progetto:integer):integer;
begin
     with DataModule1.zquery1 do
      begin
        close;
        sql.clear;
        sql.add('SELECT max(IDPRELIMINARE) as massimo FROM PRELIMINARE '+
                'WHERE AN_OP_ID_OPERA=:PROGETTO');
        ParamByName('PROGETTO').AsInteger:=progetto;
        ExecSQL;
        open;
        result:=FieldByName('massimo').AsInteger;
        close;
      end;
end;

procedure TMainForm.menueliminaautClick(Sender: TObject);
begin
    //elimina un record nella tabella delle autorizzazioni
  if not DataModule1.zqautorizzazioni.Active then
         DataModule1.zqautorizzazioni.open;
  DataModule1.dsautorizzazioni.DataSet.Delete;
  DataModule1.dsautorizzazioni.DataSet.Refresh;
end;

procedure TMainForm.menueliminagaraClick(Sender: TObject);
begin
      //elimino un record nella tabella delle gare
  if not DataModule1.zqgare.Active then
         DataModule1.zqgare.open;
  DataModule1.dsgare.DataSet.Delete;
  DataModule1.dsgare.DataSet.Refresh;
end;

procedure TMainForm.menueliminasalClick(Sender: TObject);
begin
      //elimina un record nella tabella dei sal
  if not DataModule1.zqsal.Active then
         DataModule1.zqsal.open;
  DataModule1.dssal.DataSet.Delete;
  DataModule1.dssal.DataSet.Refresh;
end;

procedure TMainForm.menunuovaautClick(Sender: TObject);
begin
    //Inserisco un record nella tabella delle autorizzazioni
  if not DataModule1.zqautorizzazioni.Active then
         DataModule1.zqautorizzazioni.open;
  DataModule1.dsautorizzazioni.DataSet.Insert;
  //poi apro la form per la modifica
  autorizzazioni:=tautorizzazioni.create(self);
  Autorizzazioni.btsalvaautorizzazione.Caption:='Salva';
  autorizzazioni.showmodal;
end;

procedure TMainForm.menunuovagaraClick(Sender: TObject);
begin
      //Inserisco un record nella tabella delle gare
  if not DataModule1.zqgare.Active then
         DataModule1.zqgare.open;
  DataModule1.dsgare.DataSet.Insert;
  //poi apro la form per la modifica
  gare:=tgare.create(self);
  gare.btsalva.Caption:='Salva';
  gare.nuovoidgara:=getmaxgara(DataModule1.zqaffidreal.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqaffidreal.FieldByName('IDPRELIMINARE').AsInteger,DataModule1.zqaffidreal.FieldByName('IDDEFINITIVO').AsInteger,DataModule1.zqaffidreal.FieldByName('IDESECUTIVO').AsInteger)+1;
  gare.showmodal;
end;

procedure TMainForm.menunuovosalClick(Sender: TObject);
begin
      //Inserisco un record nella tabella dei sal
  if not DataModule1.zqsal.Active then
         DataModule1.zqsal.open;
  DataModule1.dssal.DataSet.Insert;
  //poi apro la form per la modifica
  sal:=tsal.create(self);
  sal.btsalvasal.Caption:='Salva';
  sal.showmodal;
end;

function tmainform.getmaxdefinitivo(progetto,preliminare:integer):integer;
begin
     with DataModule1.zquery1 do
      begin
        close;
        sql.clear;
        sql.add('SELECT max(IDDEFINITIVO) as massimo FROM DEFINITIVO '+
                'WHERE AN_OP_ID_OPERA=:PROGETTO '+
                'AND IDPRELIMINARE=:PRELIMINARE');
        ParamByName('PROGETTO').AsInteger:=progetto;
        ParamByName('PRELIMINARE').AsInteger:=preliminare;
        ExecSQL;
        open;
        result:=FieldByName('massimo').AsInteger;
        close;
      end;
end;

function tmainform.getmaxesecutivo(progetto, preliminare, definitivo:integer):integer;
begin
     with DataModule1.zquery1 do
      begin
        close;
        sql.clear;
        sql.add('SELECT max(IDESECUTIVO) as massimo FROM ESECUTIVO '+
                'WHERE AN_OP_ID_OPERA=:PROGETTO '+
                'AND IDPRELIMINARE=:PRELIMINARE '+
                'AND IDDEFINITIVO=:DEFINITIVO');
        ParamByName('PROGETTO').AsInteger:=progetto;
        ParamByName('PRELIMINARE').AsInteger:=preliminare;
        ParamByName('DEFINITIVO').AsInteger:=definitivo;
        ExecSQL;
        open;
        result:=FieldByName('massimo').AsInteger;
        close;
      end;
end;

function tmainform.getmaxgara(progetto, preliminare, definitivo,esecutivo:integer):integer;
begin
     with DataModule1.zquery1 do
      begin
        close;
        sql.clear;
        sql.add('SELECT max(IDGARA) as massimo FROM GARE_FOR '+
                'WHERE IDOPERA=:PROGETTO '+
                'AND IDPRELIMINARE=:PRELIMINARE '+
                'AND IDDEFINITIVO=:DEFINITIVO '+
                'AND IDESECUTIVO=:ESECUTIVO');
        ParamByName('PROGETTO').AsInteger:=progetto;
        ParamByName('PRELIMINARE').AsInteger:=preliminare;
        ParamByName('DEFINITIVO').AsInteger:=definitivo;
        ParamByName('ESECUTIVO').AsInteger:=esecutivo;
        ExecSQL;
        open;
        result:=FieldByName('massimo').AsInteger;
        close;
      end;
end;



procedure tmainform.logmodpreliminare;
begin
     with DataModule1.zquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('INSERT INTO MODIFICHE' +
                      '(IDPROGETTO,IDPRELIMINARE,IDDEFINITIVO,IDESECUTIVO,Utente, Tabella, Data) ' +
                      'values (:IDPROGETTO,:IDPRELIMINARE,null,null,:Utente, :Tabella, :Data)');
              ParamByName('IDPROGETTO').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
              ParamByName('IDPRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
              ParamByName('Tabella').AsString:='Preliminare';
              ParamByName('Utente').AsString:=DataModule1.username;
              ParamByName('Data').AsDateTime:=Now;
              ExecSQL;
            end;
     DataModule1.zqmodpre.Refresh;
end;

procedure tmainform.logmoddefinitivo;
begin
     with DataModule1.zquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('INSERT INTO MODIFICHE' +
                      '(IDPROGETTO,IDPRELIMINARE,IDDEFINITIVO,IDESECUTIVO,Utente, Tabella, Data) ' +
                      'values (:IDPROGETTO,:IDPRELIMINARE,:IDDEFINITIVO,null,:Utente, :Tabella, :Data)');
              ParamByName('IDPROGETTO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
               ParamByName('IDPRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
                ParamByName('IDDEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
              ParamByName('Tabella').AsString:='Definitivo';
              ParamByName('Utente').AsString:=DataModule1.username;
              ParamByName('Data').AsDateTime:=Now;
              ExecSQL;
            end;
     DataModule1.zqmoddef.Refresh;
end;

procedure tmainform.logmodesecutivo;
begin
     with DataModule1.zquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('INSERT INTO MODIFICHE' +
                      '(IDPROGETTO,IDPRELIMINARE,IDDEFINITIVO,IDESECUTIVO,Utente, Tabella, Data) ' +
                      'values (:IDPROGETTO,:IDPRELIMINARE,:IDDEFINITIVO,:IDESECUTIVO,:Utente, :Tabella, :Data)');
              ParamByName('IDPROGETTO').AsInteger:=DataModule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
              ParamByName('IDPRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').AsInteger;
              ParamByName('IDDEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').AsInteger;
              ParamByName('IDESECUTIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger;
              ParamByName('Tabella').AsString:='Esecutivo';
              ParamByName('Utente').AsString:=DataModule1.username;
              ParamByName('Data').AsDateTime:=Now;
              ExecSQL;
            end;
     DataModule1.zqmodese.Refresh;
end;

procedure tmainform.logmodaffidamento;
begin
     with DataModule1.zquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('INSERT INTO MODIFICHE' +
                      '(IDPROGETTO,IDPRELIMINARE,IDDEFINITIVO,IDESECUTIVO,Utente, Tabella, Data) ' +
                      'values (:IDPROGETTO,:IDPRELIMINARE,:IDDEFINITIVO,:IDESECUTIVO,:Utente, :Tabella, :Data)');
              ParamByName('IDPROGETTO').AsInteger:=DataModule1.zqaffidreal.FieldByName('AN_OP_ID_OPERA').AsInteger;
              ParamByName('IDPRELIMINARE').AsInteger:=DataModule1.zqaffidreal.FieldByName('IDPRELIMINARE').AsInteger;
              ParamByName('IDDEFINITIVO').AsInteger:=DataModule1.zqaffidreal.FieldByName('IDDEFINITIVO').AsInteger;
              ParamByName('IDESECUTIVO').AsInteger:=DataModule1.zqaffidreal.FieldByName('IDESECUTIVO').AsInteger;
              ParamByName('Tabella').AsString:='Affidamento';
              ParamByName('Utente').AsString:=DataModule1.username;
              ParamByName('Data').AsDateTime:=Now;
              ExecSQL;
            end;
     DataModule1.zqmodaff.Refresh;
end;

procedure tmainform.logmodlavori;
begin
     with DataModule1.zquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('INSERT INTO MODIFICHE' +
                      '(IDPROGETTO,IDPRELIMINARE,IDDEFINITIVO,IDESECUTIVO,Utente, Tabella, Data) ' +
                      'values (:IDPROGETTO,:IDPRELIMINARE,:IDDEFINITIVO,:IDESECUTIVO,:Utente, :Tabella, :Data)');
              ParamByName('IDPROGETTO').AsInteger:=DataModule1.zqlavori.FieldByName('AN_OP_ID_OPERA').AsInteger;
              ParamByName('IDPRELIMINARE').AsInteger:=DataModule1.zqlavori.FieldByName('IDPRELIMINARE').AsInteger;
              ParamByName('IDDEFINITIVO').AsInteger:=DataModule1.zqlavori.FieldByName('IDDEFINITIVO').AsInteger;
              ParamByName('IDESECUTIVO').AsInteger:=DataModule1.zqlavori.FieldByName('IDESECUTIVO').AsInteger;
              ParamByName('Tabella').AsString:='Esecuzione';
              ParamByName('Utente').AsString:=DataModule1.username;
              ParamByName('Data').AsDateTime:=Now;
              ExecSQL;
            end;
     DataModule1.zqmodlav.Refresh;
end;
procedure TMainForm.btstampeClick(Sender: TObject);
begin
stampe:=Tstampe.Create(self);
stampe.showmodal;
end;

procedure TMainForm.btvarianteClick(Sender: TObject);
var nuovoese,vecchioese:integer;
begin
  //salvo il valore corrente e il nuovo valore dell'esecutivo
  vecchioese:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').asinteger;
  nuovoese:=getmaxesecutivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger, DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger )+1;
  //inserisco un record nella tabella dei esecutivi, affidamenti e lavori
  //copio il nuovo esecutivo con valore di variante
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('INSERT INTO ESECUTIVO '+
                 '(AN_OP_ID_OPERA, IDPRELIMINARE, IDDEFINITIVO, IDESECUTIVO, NOME, PR_ES_INCARICO, '+
                 'PR_ES_PROGETT, PR_ES_ASS_PRO, PR_ES_RIF_INT, PR_ES_COOR_SIC, PR_ES_DATA_ASS,'+
                 'PR_ES_DATA_PR_APPR, PR_ES_DATA_EFF_APPR, PR_ES_DATA_DEL_APPR, PR_ES_NUM_DEL_APPR, '+
                 'IMPORTO_ES_VARIANTE, TIPO_VARIANTE, VARIANTE, BLOC_VARIANTE, DATA_EFF_RIES_VER_PROG, '+
                 'NOTE) '+
                 'SELECT AN_OP_ID_OPERA, IDPRELIMINARE, IDDEFINITIVO, :ESECUTIVO, :NOME, PR_ES_INCARICO, '+
                 'PR_ES_PROGETT, PR_ES_ASS_PRO, PR_ES_RIF_INT, PR_ES_COOR_SIC, PR_ES_DATA_ASS,'+
                 'PR_ES_DATA_PR_APPR, PR_ES_DATA_EFF_APPR, PR_ES_DATA_DEL_APPR, PR_ES_NUM_DEL_APPR, '+
                 'IMPORTO_ES_VARIANTE, TIPO_VARIANTE, 1, BLOC_VARIANTE, DATA_EFF_RIES_VER_PROG, '+
                 'NOTE FROM ESECUTIVO '+
                 'WHERE AN_OP_ID_OPERA=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('ESECUTIVO').AsInteger:=nuovoese;
         ParamByName('NOME').AsString:='Variante';
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;
  //copio l'affidamento
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('INSERT INTO AFFIDAMENTO '+
                 '(AN_OP_ID_OPERA, IDPRELIMINARE, IDDEFINITIVO, IDESECUTIVO, AF_RE_TIPO_GARA_APP, '+
                 ' AF_RE_TIPO_GARA_FOR_1, AF_RE_TIPO_GARA_FOR_2, AF_RE_DATA_RIC_DATI, AF_RE_DATA_PR_AVVIO_APP,  '+
                 ' AF_RE_DATA_EFF_AVVIO, AF_RE_DATA_ESPL, AF_RE_DATA_PR_AGG, AF_RE_DATA_EFF_CONTR, '+
                 ' AF_RE_IMPR_AFFID, AF_RE_IMPR_AGG_LAV, AF_RE_IMP_BASE_ASTA, AF_RE_RIB_CONS, '+
                 ' AF_RE_DATA_PR_AVVIO_FOR, AF_RE_DATA_EFF_AVVIO_FOR, AF_RE_DATA_ESPL_FOR, '+
                 ' AF_RE_DATA_PR_AGG_FOR, AF_RE_DATA_PR_PER_FOR, AF_RE_IMPRESA_FOR, AF_RE_IMPR_AGG_FOR, '+
                 ' AF_RE_IMP_BASE_ASTA_FOR, AF_RE_RIB_CONS_FOR, AF_RE_DATA_PR_AVVIO_FOR_2,  '+
                 ' AF_RE_DATA_EFF_AVVIO_FOR_2, AF_RE_DATA_ESPL_FOR_2, AF_RE_DATA_PR_AGG_FOR_2,  '+
                 ' AF_RE_DATA_PR_PER_FOR_2, AF_RE_IMPRESA_FOR_2, AF_RE_IMPR_AGG_FOR_2,  '+
                 ' AF_RE_IMP_BASE_ASTA_FOR_2, AF_RE_RIB_CONS_FOR_2) '+
                 'SELECT AN_OP_ID_OPERA, IDPRELIMINARE, IDDEFINITIVO, :ESECUTIVO, AF_RE_TIPO_GARA_APP, '+
                 'AF_RE_TIPO_GARA_FOR_1, AF_RE_TIPO_GARA_FOR_2, AF_RE_DATA_RIC_DATI, AF_RE_DATA_PR_AVVIO_APP,  '+
                 'AF_RE_DATA_EFF_AVVIO, AF_RE_DATA_ESPL, AF_RE_DATA_PR_AGG, AF_RE_DATA_EFF_CONTR, '+
                 'AF_RE_IMPR_AFFID, AF_RE_IMPR_AGG_LAV, AF_RE_IMP_BASE_ASTA, AF_RE_RIB_CONS,  '+
                 'AF_RE_DATA_PR_AVVIO_FOR, AF_RE_DATA_EFF_AVVIO_FOR, AF_RE_DATA_ESPL_FOR, '+
                 'AF_RE_DATA_PR_AGG_FOR, AF_RE_DATA_PR_PER_FOR, AF_RE_IMPRESA_FOR, AF_RE_IMPR_AGG_FOR,   '+
                 'AF_RE_IMP_BASE_ASTA_FOR, AF_RE_RIB_CONS_FOR, AF_RE_DATA_PR_AVVIO_FOR_2,  '+
                 'AF_RE_DATA_EFF_AVVIO_FOR_2, AF_RE_DATA_ESPL_FOR_2, AF_RE_DATA_PR_AGG_FOR_2,  '+
                 'AF_RE_DATA_PR_PER_FOR_2, AF_RE_IMPRESA_FOR_2, AF_RE_IMPR_AGG_FOR_2,  '+
                 'AF_RE_IMP_BASE_ASTA_FOR_2, AF_RE_RIB_CONS_FOR_2 FROM AFFIDAMENTO '+
                 'WHERE AN_OP_ID_OPERA=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('ESECUTIVO').AsInteger:=nuovoese;
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;
  //copio l'esecuzione (lavori)
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('INSERT INTO LAVORI '+
                 '(AN_OP_ID_OPERA, IDPRELIMINARE, IDDEFINITIVO, IDESECUTIVO, ES_OP_DIR_LAV, '+
                 'ES_OP_ASS_DL, ES_OP_COORD, ES_OP_DATA_PR_CONS, ES_OP_DATA_EFF_CONS,   '+
                 'ES_OP_DATA_EFF_INIZIO, ES_OP_PERC_REAL, ES_OP_DATA_ULT_PR, ES_OP_DATA_ULT_EFF,   '+
                 'ES_OP_DATA_COLL_PRO_PR, ES_OP_DATA_COLL_PRO_EFF, ES_OP_RISERVE_APPAL,     '+
                 'ES_OP_DATA_APP_COLL_PROV_PR, ES_OP_DATA_APP_COLL_PROV_EF, ES_OP_IMP_DEF_RIS_ACC_BON, '+
                 'ES_OP_IMP_DEF_RIS_CONT, ES_OP_IMP_CONS_APPAL, ES_OP_IMP_CONS_FOR, ES_OP_IMP_CONS_TEC,  '+
                 'ES_OP_IMP_CONS_ALTRESPESE, ES_OP_DATA_DEL_CHIU_OPERA, ES_OP_DATA_AVVIO_ESER_PR, '+
                 'ES_OP_DATA_AVVIO_ESER_EFF, ES_OP_DATA_INIZIO_CONT, ES_OP_DATA_FINE_CONT,      '+
                 'ES_OP_DATA_COLL_DEF, ES_OP_CONS_OPERA_1, ES_OP_CONS_OPERA_2, ES_OP_CONS_OPERA_3,   '+
                 'ES_OP_DATA_VAL_COMP, ES_OP_IMP_TOT_OPERA, ES_OP_VAL_COMP, NOTE) '+
                 'SELECT AN_OP_ID_OPERA, IDPRELIMINARE, IDDEFINITIVO, :ESECUTIVO, ES_OP_DIR_LAV, '+
                 'ES_OP_ASS_DL, ES_OP_COORD, ES_OP_DATA_PR_CONS, ES_OP_DATA_EFF_CONS,   '+
                 'ES_OP_DATA_EFF_INIZIO, ES_OP_PERC_REAL, ES_OP_DATA_ULT_PR, ES_OP_DATA_ULT_EFF,   '+
                 'ES_OP_DATA_COLL_PRO_PR, ES_OP_DATA_COLL_PRO_EFF, ES_OP_RISERVE_APPAL,     '+
                 'ES_OP_DATA_APP_COLL_PROV_PR, ES_OP_DATA_APP_COLL_PROV_EF, ES_OP_IMP_DEF_RIS_ACC_BON, '+
                 'ES_OP_IMP_DEF_RIS_CONT, ES_OP_IMP_CONS_APPAL, ES_OP_IMP_CONS_FOR, ES_OP_IMP_CONS_TEC,  '+
                 'ES_OP_IMP_CONS_ALTRESPESE, ES_OP_DATA_DEL_CHIU_OPERA, ES_OP_DATA_AVVIO_ESER_PR, '+
                 'ES_OP_DATA_AVVIO_ESER_EFF, ES_OP_DATA_INIZIO_CONT, ES_OP_DATA_FINE_CONT,      '+
                 'ES_OP_DATA_COLL_DEF, ES_OP_CONS_OPERA_1, ES_OP_CONS_OPERA_2, ES_OP_CONS_OPERA_3,   '+
                 'ES_OP_DATA_VAL_COMP, ES_OP_IMP_TOT_OPERA, ES_OP_VAL_COMP, NOTE FROM LAVORI '+
                 'WHERE AN_OP_ID_OPERA=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('ESECUTIVO').AsInteger:=nuovoese;
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;

  //creo una copia del record corrente dalla tabella stato avanzamanento lavori
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('INSERT INTO TabSAL '+
                 '( ID_OPERA_SAL, IDPRELIMINARE, IDDEFINITIVO, '+
                 'IDESECUTIVO, SAL_DATA_EM_PR,   '+
                 'SAL_IMPORTO_PR, SAL_DATA_EM_EFF, SAL_IMPORTO_EFF,  '+
                 'SAL_DATA_EM_CERT) '+
                 'SELECT ID_OPERA_SAL, IDPRELIMINARE, IDDEFINITIVO, '+
                 ':ESECUTIVO, SAL_DATA_EM_PR,   '+
                 'SAL_IMPORTO_PR, SAL_DATA_EM_EFF, SAL_IMPORTO_EFF,  '+
                 'SAL_DATA_EM_CERT  FROM TabSAL '+
                 'WHERE ID_OPERA_SAL=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('ESECUTIVO').AsInteger:=nuovoese;
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;
  //creo una copia del record corrente dalla tabella sgare
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('INSERT INTO GARE_FOR '+
                 '(IDOPERA, IDPRELIMINARE, IDDEFINITIVO, IDESECUTIVO, IDGARA, TIPO, AF_RE_DATA_PR_AVVIO_FOR,   '+
                 'AF_RE_DATA_EFF_AVVIO_FOR, AF_RE_DATA_ESPL_FOR, AF_RE_DATA_PR_AGG_FOR,  '+
                 'AF_RE_DATA_PR_PER_FOR, AF_RE_IMPRESA_FOR, AF_RE_IMPR_AGG_FOR, AF_RE_IMP_BASE_ASTA_FOR,  '+
                 'AF_RE_RIB_CONS_FOR) '+
                 'SELECT IDOPERA, IDPRELIMINARE, IDDEFINITIVO, :ESECUTIVO, IDGARA, TIPO, AF_RE_DATA_PR_AVVIO_FOR,   '+
                 'AF_RE_DATA_EFF_AVVIO_FOR, AF_RE_DATA_ESPL_FOR, AF_RE_DATA_PR_AGG_FOR,  '+
                 'AF_RE_DATA_PR_PER_FOR, AF_RE_IMPRESA_FOR, AF_RE_IMPR_AGG_FOR, AF_RE_IMP_BASE_ASTA_FOR,  '+
                 'AF_RE_RIB_CONS_FOR FROM GARE_FOR '+
                 'WHERE IDOPERA=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('ESECUTIVO').AsInteger:=nuovoese;
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;
  //creo una copia del record corrente dalla tabella autorizzazioni
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('INSERT INTO TabAut '+
                 '(ID_OPERA_AUT, IDPRELIMINARE, IDDEFINITIVO, IDESECUTIVO,  '+
                 'FASE_AUT, ENTE_AUT,  '+
                 'DATA_RIC_AUT, DATA_PR_AUT, DATA_EFF_AUT, NOTE)  '+
                 'SELECT ID_OPERA_AUT, IDPRELIMINARE, IDDEFINITIVO, :ESECUTIVO,  '+
                 'FASE_AUT, ENTE_AUT,  '+
                 'DATA_RIC_AUT, DATA_PR_AUT, DATA_EFF_AUT, NOTE FROM TabAut '+
                 'WHERE ID_OPERA_AUT=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('ESECUTIVO').AsInteger:=nuovoese;
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;
  //creo una copia del log delle modifiche
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('INSERT INTO MODIFICHE '+
                 '( [IDPROGETTO],[IDPRELIMINARE],[IDDEFINITIVO],[IDESECUTIVO],[Utente],[Tabella],[Data]) '+
                 'SELECT [IDPROGETTO],[IDPRELIMINARE],[IDDEFINITIVO],:ESECUTIVO,[Utente],[Tabella],[Data] '+
                 'FROM MODIFICHE '+
                 'WHERE IDPROGETTO=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('ESECUTIVO').AsInteger:=nuovoese;
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;
  //ora imposto il campo BLOC_VARIANTE del vecchio record a 1 così questo non verrà più visualizzato
  with DataModule1.zquery1 do
       begin
         sql.clear;
         close;
         sql.add('UPDATE ESECUTIVO '+
                 'SET BLOC_VARIANTE = 1 '+
                 'WHERE AN_OP_ID_OPERA=:OPERA AND IDPRELIMINARE=:PRELIMINARE '+
                 'AND IDDEFINITIVO=:DEFINITIVO AND IDESECUTIVO=:VECCHIOESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').asinteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').asinteger;
         ParamByName('VECCHIOESECUTIVO').AsInteger:=vecchioese;
         execsql;
       end;

  //quindi refresho le grigle per visualizzare il nuovo
  DataModule1.zqgrigliaesecutivo.Refresh;
  DataModule1.zqgrigliaesecutivo.Last;
  //mi posiziono sulla linguetta esecutivo
  PageControl1.ActivePageIndex:=4;
end;



procedure TMainForm.btinsertdefinitivoClick(Sender: TObject);
var nuovodef,nuovoese:integer;
begin
  nuovodef:=getmaxdefinitivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').asinteger )+1;
  //inserisco un record nella tabella dei pereliminari
  newdefinitivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').asinteger,nuovodef,'Definitivo Base');
  DataModule1.zqgrigliadefinitivo.Refresh;
  DataModule1.zqgrigliadefinitivo.Last;
  //mi posiziono sulla linguetta preliminare
  PageControl1.ActivePageIndex:=3;
  nuovoese:=getmaxesecutivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger, DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger )+1;
  //inserisco un record nella tabella dei esecutivi, affidamenti e lavori
  newesecutivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese,'Esecutivo Base');
  newaffidamento(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese);
  newlavori(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese);
  DataModule1.zqgrigliaesecutivo.Refresh;
  DataModule1.zqgrigliaesecutivo.Last;
end;

procedure TMainForm.bteliminaesecutivoClick(Sender: TObject);
begin
  if DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger = 1 then
     begin
       ShowMessage('Non puoi cancellare il progetto base');
       exit;
     end;
 if   MessageDlg('Sei sicuro di cancellare esecutivo, affidamento e esecuzione??',mtconfirmation,[mbyes,mbno],0) = mrNo then
    exit;
  //elimino in successione inversa
  //sal
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [TabSAL] '+
                 'WHERE ID_OPERA_SAL = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO '+
                 'AND IDESECUTIVO = :ESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').AsInteger;
         ParamByName('ESECUTIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger;
         execsql;
       end;
  //esecuzione opera
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [LAVORI] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO '+
                 'AND IDESECUTIVO = :ESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').AsInteger;
         ParamByName('ESECUTIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger;
         execsql;
       end;
  //gare
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [GARE_FOR] '+
                 'WHERE IDOPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO '+
                 'AND IDESECUTIVO = :ESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').AsInteger;
         ParamByName('ESECUTIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger;
         execsql;
       end;
  //affidamento
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [AFFIDAMENTO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO '+
                 'AND IDESECUTIVO = :ESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').AsInteger;
         ParamByName('ESECUTIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger;
         execsql;
       end;
  //autorizzazioni
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [TabAut] '+
                 'WHERE ID_OPERA_AUT = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO '+
                 'AND IDESECUTIVO = :ESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').AsInteger;
         ParamByName('ESECUTIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger;
         execsql;
       end;
  //esecutivo
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [ESECUTIVO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO '+
                 'AND IDESECUTIVO = :ESECUTIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqesecutivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDDEFINITIVO').AsInteger;
         ParamByName('ESECUTIVO').AsInteger:=DataModule1.zqesecutivo.FieldByName('IDESECUTIVO').AsInteger;
         execsql;
       end;
 DataModule1.zqgrigliaesecutivo.Refresh;
 ShowMessage('Progetti eliminati con successo');
end;

procedure TMainForm.bteliminapreliminareClick(Sender: TObject);
begin
      if DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger = 1 then
     begin
       ShowMessage('Non puoi cancellare il progetto base');
       exit;
     end;
 if   MessageDlg('Sei sicuro di cancellare definitivo, esecutivo, affidamento e esecuzione??',mtconfirmation,[mbyes,mbno],0) = mrNo then
    exit;
  //elimino in successione inversa
  //sal
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [TabSAL] '+
                 'WHERE ID_OPERA_SAL = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
  //esecuzione opera
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [LAVORI] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
  //gare
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [GARE_FOR] '+
                 'WHERE IDOPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
  //affidamento
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [AFFIDAMENTO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
  //autorizzazioni
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [TabAut] '+
                 'WHERE ID_OPERA_AUT = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
  //esecutivo
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [ESECUTIVO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
         //definitivo
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [DEFINITIVO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
           //preliminare
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [PRELIMINARE] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqpreliminare.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqpreliminare.FieldByName('IDPRELIMINARE').AsInteger;
         execsql;
       end;
 DataModule1.zqgrigliapreliminari.Refresh;
 DataModule1.zqgrigliapreliminariAfterScroll(DataModule1.zqgrigliapreliminari);
 ShowMessage('Progetti eliminati con successo');
end;

procedure TMainForm.bteliminadefinitivoClick(Sender: TObject);
begin
    if DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger = 1 then
     begin
       ShowMessage('Non puoi cancellare il progetto base');
       exit;
     end;
 if   MessageDlg('Sei sicuro di cancellare definitivo, esecutivo, affidamento e esecuzione??',mtconfirmation,[mbyes,mbno],0) = mrNo then
    exit;
  //elimino in successione inversa
  //sal
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [TabSAL] '+
                 'WHERE ID_OPERA_SAL = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
         execsql;
       end;
  //esecuzione opera
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [LAVORI] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
         execsql;
       end;
  //gare
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [GARE_FOR] '+
                 'WHERE IDOPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
         execsql;
       end;
  //affidamento
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [AFFIDAMENTO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
         execsql;
       end;
  //autorizzazioni
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [TabAut] '+
                 'WHERE ID_OPERA_AUT = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
         execsql;
       end;
  //esecutivo
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [ESECUTIVO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
         execsql;
       end;
         //definitivo
  with DataModule1.zquery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM [DEFINITIVO] '+
                 'WHERE AN_OP_ID_OPERA = :OPERA '+
                 'AND IDPRELIMINARE = :PRELIMINARE '+
                 'AND IDDEFINITIVO = :DEFINITIVO ');
         ParamByName('OPERA').AsInteger:=DataModule1.zqdefinitivo.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('PRELIMINARE').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').AsInteger;
         ParamByName('DEFINITIVO').AsInteger:=DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').AsInteger;
         execsql;
       end;
 DataModule1.zqgrigliadefinitivo.Refresh;
 DataModule1.zqgrigliadefinitivoAfterScroll(DataModule1.zqgrigliadefinitivo);
 ShowMessage('Progetti eliminati con successo');
end;

procedure TMainForm.btinsertesecutivoClick(Sender: TObject);
var nuovoese:integer;
begin
  nuovoese:=getmaxesecutivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger, DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger )+1;
  //inserisco un record nella tabella dei esecutivi, affidamenti e lavori
  newesecutivo(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese,'Esecutivo Base');
  newaffidamento(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese);
  newlavori(DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger,DataModule1.zqdefinitivo.FieldByName('IDPRELIMINARE').asinteger,DataModule1.zqdefinitivo.FieldByName('IDDEFINITIVO').asinteger,nuovoese);
  DataModule1.zqgrigliaesecutivo.Refresh;
   DataModule1.zqgrigliaesecutivo.Last;
  //mi posiziono sulla linguetta preliminare
  PageControl1.ActivePageIndex:=4;
end;

procedure TMainForm.modanagrafica;
begin
btsalvaprogetto.Enabled:=true;
end;

procedure TMainForm.moddefinitivo;
begin
btsalvadef.Enabled:=true;
end;

 procedure TMainForm.modpreliminare;
begin
btsalvapreliminare.Enabled:=true;
end;
 procedure TMainForm.modesecutivo;
begin
btsalvaesecutivo.Enabled:=true;
end;
 procedure TMainForm.modaffidamento;
begin
btsalvaaffidamento.Enabled:=true;

end;
 procedure TMainForm.modlavori;
begin
btsalvaesecuzione.Enabled:=true;
end;
 procedure TMainForm.modstandard;
begin
//btsalva.Enabled:=true;
end;


 procedure TMainForm.btcalcolatotaleClick(Sender: TObject);
begin
DataModule1.zqlavori.Edit;
DB_ES_OP_Imp_Tot_Opera.Text:=CurrToStr(DataModule1.zqlavori.FieldByName('ES_OP_IMP_CONS_APPAL').AsCurrency+DataModule1.zqlavori.FieldByName('ES_OP_IMP_SOMMEDISPO').AsCurrency);
end;

procedure TMainForm.btdeletecomuneClick(Sender: TObject);
begin
   //rimuoviamo il comune alla lista di quelli interessati
  with DataModule1.ZQuery1 do
       begin
         close;
         sql.clear;
         sql.add('DELETE FROM TabComune '+
                 'WHERE ID_OPERA_COM=:ID '+
                 'AND COMUNE=:COMUNE ');
         ParamByName('ID').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('COMUNE').AsString:=DataModule1.zqcomuniinteressati.FieldByName('COMUNE').AsString;
         execsql;
       end;
  DataModule1.dscomuniinteressati.DataSet.Refresh;
end;

procedure TMainForm.bteliminaautorizzazioneClick(Sender: TObject);
begin

end;



procedure TMainForm.btinsertprogettoClick(Sender: TObject);
begin
  //vado in insert sulla tabella anagrafica
  DataModule1.dsanagrafica.DataSet.Insert;
  //mi posiziono sulla linguetta anagrafica
  PageControl1.ActivePageIndex:=0;
  //modifico la caption del pulsante
  btsalvaprogetto.Caption:='Salva Anagrafica';
  btsalvaprogetto.Enabled:=true;
end;

procedure TMainForm.btsalvapreliminareClick(Sender: TObject);
begin
  DataModule1.zqpreliminare.ApplyUpdates;
  DataModule1.zqpreliminare.CommitUpdates;
  //aggiorna la griglia del preliminari
  DataModule1.dsgrigliapreliminari.DataSet.Refresh;
  //inserimento log modifica su tabella apposita
  logmodpreliminare;
  //risistemo i pulsanti
  btsalvapreliminare.Enabled:=false;
end;

procedure TMainForm.btinsertcomuneClick(Sender: TObject);
begin
  //aggiungiamo il comune alla lista di quelli interessati
  with DataModule1.ZQuery1 do
       begin
         close;
         sql.clear;
         sql.add('INSERT INTO TabComune '+
                 '(ID_OPERA_COM,COMUNE) '+
                 'VALUES ( :IDOPERA,:COMUNE)');
         ParamByName('IDOPERA').AsInteger:=DataModule1.zqanagrafica.FieldByName('AN_OP_ID_OPERA').AsInteger;
         ParamByName('COMUNE').AsString:=cbcomuni.Text;
         execsql;
       end;
  DataModule1.dscomuniinteressati.DataSet.Refresh;
end;

procedure TMainForm.btsalvaaffidamentoClick(Sender: TObject);
begin
  //passo il valore dell'id progetto e dell'id definitivo, quindi salvo le modifich
  //DataModule1.zqaffidreal.FieldByName('AN_OP_ID_OPERA').Value:=DataModule1.dsesecutivo.DataSet.FieldByName('AN_OP_ID_OPERA').AsInteger;
  //DataModule1.zqaffidreal.FieldByName('IDPRELIMINARE').value:= DataModule1.dsesecutivo.DataSet.FieldByName('IDPRELIMINARE').AsInteger;
  //DataModule1.zqaffidreal.FieldByName('IDDEFINITIVO').value:= DataModule1.dsesecutivo.DataSet.FieldByName('IDDEFINITIVO').AsInteger;
  //DataModule1.zqaffidreal.FieldByName('IDESECUTIVO').value:= DataModule1.dsesecutivo.DataSet.FieldByName('IDESECUTIVO').AsInteger;
  DataModule1.zqaffidreal.ApplyUpdates;
  DataModule1.zqaffidreal.CommitUpdates;
  //inserimento log modifica su tabella apposita
  logmodaffidamento;
  //risistemo i pulsanti
  btsalvaaffidamento.Caption:='Modifica Affidamento';
  btsalvaaffidamento.Enabled:=false;
end;




initialization
  {$I mainform_frm.lrs}

end.

